package reflect;

import java.lang.reflect.Method;
import java.util.Scanner;

/**
 * JAVA反射机制
 * 反射是JAVA的动态机制，可以在程序【运行期间】再确定如:对象实例化，方法调用
 * 属性操作等。
 * 反射机制可以大大的提高代码的灵活度和可扩展性，但是随之带来的是较慢的运行
 * 效率和更多的系统开销。因此不能过度依赖反射机制。
 */
public class ReflectDemo1 {
    public static void main(String[] args) throws Exception {
//        Class cls = String.class;
//        Class cls = Person.class;

//        Class cls = Class.forName("reflect.Person");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个类名:");
        String className = scanner.nextLine();
        Class cls = Class.forName(className);
        String name = cls.getName();
        System.out.println(name);
        name = cls.getSimpleName();
        System.out.println(name);

        Method[] methods = cls.getMethods();
        System.out.println(name+"一共有"+methods.length+"个公开方法");
        for(Method method:methods){
            System.out.println("公开方法有:"+method.getName());
        }

    }
}
